
n1 = 6035830951309638186877554194461701691293718312181839424149825035972373443231514869488117139554688905904333169357086297500189578624512573983935412622898726797379658795547168254487169419193859102095920229216279737921183786260128443133977458414094572688077140538467216150378641116223616640713960883880973572260683
n2 = 20163906788220322201451577848491140709934459544530540491496316478863216041602438391240885798072944983762763612154204258364582429930908603435291338810293235475910630277814171079127000082991765275778402968190793371421104016122994314171387648385459262396767639666659583363742368765758097301899441819527512879933947

c1=6624758244437183700228793390575387439910775985543869953485120951825790403986028668723069396276896827302706342862776605008038149721097476152863529945095435498809442643082504012461883786296234960634593997098236558840899107452647003306820097771301898479134315680273315445282673421302058215601162967617943836306076
c2=204384474875628990804496315735508023717499220909413449050868658084284187670628949761107184746708810539920536825856744947995442111688188562682921193868294477052992835394998910706435735040133361347697720913541458302074252626700854595868437809272878960638744881154520946183933043843588964174947340240510756356766

import gmpy2
import libnum
import sympy

n22=n2//(13*25)
# print(n22)
a,s=gmpy2.iroot(n22,2)
# print(a)
# print(gmpy2.bit_length(a))
for i in range(10000):
    #print(i)
    a=sympy.prevprime(a)
    if gmpy2.is_prime(a):
        p = sympy.nextprime(13 * a)
        q = sympy.prevprime(25 * a)
        if n2==p*q:
            print(p)
            print(q)
            break
p=102397419546952293033860597727650152144175130286102358700580521651161981691864932442389800376284315897109792547767071136122457986326994452907466660551539601
q=196918114513369794295885764860865677200336789011735305193424080098388426330509485466134231492854453648288062591859752184850880742936527794052820501060652747
phi=(p-1)*(q-1)
e=0xe18e

def decrypt(p, q, e, c):
    n = p * q
    phi = (p - 1) * (q - 1)
    t = gmpy2.gcd(e, phi)
    d = gmpy2.invert(e // t, phi)
    m = pow(c, d, n)
    m,s = gmpy2.iroot(m, t)
    return m
m2=decrypt(p, q, e, c2)
print(m2)
flag2=(libnum.n2s(int(m2)))

phi = (p - 1) * (q - 1)
d1 = gmpy2.invert(n1, phi)
m1=pow(c1,d1,n2)
print(m1)
flag1=(libnum.n2s(int(m1)))
print(flag1+flag2)